我更期待有超过 1% 的人,能够体会到本期周刊一直在强调的方法:以解决某个具体问题为出发点,直接上手一个小项目,在见招拆招的过程中提高学习的效率。
我更期待有超过 1% 的人,能够体会到本期周刊一直在强调的方法:以解决某个具体问题为出发点,直接上手一个小项目,在见招拆招的过程中提高学习的效率。
编程能力是一种解决问题的能力。如果问题没能被很好地解决,知道再多也没用。
高手和新手的区别在于新手往往不知道轮子的适用范围,而高手的手上轮子数量多且熟知各种轮子的差异,所以对不同的问题可以轻松地找到合适的轮子,当实在找不到合适的轮子时可以自己动手改造现有的轮子。平时有时间拆装和改造已有的轮子会对水平提升有较大帮助。当然能知道怎样快速在搜索引擎里搜出轮子也是一种能力。
编程能力是一种取舍的能力。局部的最优解未必是全局的最优解。如果一个美妙的解决方案需要将完工时间向后推迟一两个月,需要考虑是否先使用平凡方案解决问题,之后再进行优化。当你的工作延后会阻碍别人的工作时尤其如此。发现一个绝妙的优化方案时先想想这个优化是否真的有价值,如果只是系统中很小的部分,那么不要为了追求心理满足而花很多时间放一个漂亮的轮子上去(参考 Amdahl 定律)。
Python 的哲学:
用一种方法,最好是只有一种方法来做一件事。